﻿using System;

namespace Fadd
{
	/// <summary>
	/// Used to build a IOC container
	/// </summary>
	public interface IContainerBuilder
	{
		void Register<TService, TImplementation>();
		void Register(Type service, Type implementation);

        /// <summary>
        /// Register all implemented interfaces
        /// </summary>
        /// <typeparam name="T"></typeparam>
	    void Register<T>();

	    void RegisterInstanceAsSelf(object instance);


        /// <summary>
        /// Register all implemented interfaces.
        /// </summary>
        /// <param name="instance"></param>
	    void RegisterInstance(object instance);
	}
}
